package com.itheima.controller;

import com.github.pagehelper.Page;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.DeptService;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;

//员工管理 的 控制层
@RestController
@RequestMapping("/emps")
@Slf4j
public class EmpController {
    //依赖service
    @Autowired
    private EmpService empService;


    @GetMapping
    public Result page(String name, Short gender,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end,
                       @RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10")Integer pageSize){
        log.info("当前查询的页码是:"+page);
        log.info("当前分页查询每页显示条数是:"+pageSize);
        log.info("条件参数 name gender beigin end {},{},{},{} ",name,gender,begin,end);
        // 让 service 完成 条件分页查询
       // 需要把 这些个参数 都传递给service  还需要service 返回 页面要的 PageBean数据
        PageBean pb = empService.page(name,gender,begin,end,page,pageSize);
        return Result.success(pb);
    }

    /*
      批量删除
      既可以错批量删除 也可以做单独的删除
     */
    @DeleteMapping("/{ids}")
    public Result delete(@PathVariable ArrayList<Integer> ids){
        log.info("删除的id是:"+ids);
        //调用 service 完成 删除
        empService.delete(ids);// 需要告诉 service哪些要被删除
        return Result.success();//不需要  是因为接口告诉我的
    }

    /*
    添加 员工信息
     */
    @PostMapping
    public Result save(@RequestBody Emp emp){
        log.info("查看添加对象:{}",emp);
        //把这个添加的事交给service
        empService.save(emp);//emp是要添加的信息

        return Result.success();
    }

    /*
     根据 id 查询员工信息
     */
    @GetMapping("/{id}")
    public Result findById(@PathVariable Integer id){
        log.info("需要查询的员工id是:"+id);
        // service来完成
        Emp emp = empService.findById(id);

        // 响应回去
        return Result.success(emp);
    }

    /*
     根据id修改员工信息
         接收到 里面包含了id 以及需要修改 属性信息
     */
    @PutMapping
    public Result update(@RequestBody Emp emp){
        log.info("需要修改的对象信息:"+emp);
        //调用service 完成更新操作 根据id更新
        empService.update(emp);
        return Result.success();
    }
}
